package first

/*
	用两个栈实现一个队列。队列的声明如下，请实现它的两个函数 appendTail 和 deleteHead ，分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素，deleteHead操作返回 -1 )

	示例 1：

	输入：
	["CQueue","appendTail","deleteHead","deleteHead"]
	[[],[3],[],[]]
	输出：[null,null,3,-1]
	示例 2：

	输入：
	["CQueue","deleteHead","appendTail","appendTail","deleteHead","deleteHead"]
	[[],[],[5],[2],[],[]]
	输出：[null,-1,null,null,5,2]
	提示：

	1 <= values <= 10000
	最多会对appendTail、deleteHead 进行10000次调用
	通过次数215,762提交次数299,934
	请问您在哪类招聘中遇到此题？

	来源：力扣（LeetCode）
	链接：https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof
	著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/
type CQueue struct {
	queue []int
}

func CQConstructor() CQueue {
	return CQueue{
		queue: make([]int, 0),
	}
}

func (this *CQueue) AppendTail(value int) {
	this.queue = append(this.queue, value)
}

func (this *CQueue) DeleteHead() int {
	if len(this.queue) == 0 {
		return -1
	}
	head := this.queue[0]
	this.queue = this.queue[1:]
	return head
}

/**
 * Your CQueue object will be instantiated and called as such:
 * obj := Constructor();
 * obj.AppendTail(value);
 * param_2 := obj.DeleteHead();
 */
